<?php 
namespace Admin\Controller;

use Think\Controller;
use Think\Verify;

class LoginController extends Controller{
    // 显示登录界面
    public function login(){
        
        if (IS_POST){ // 验证用户名跟密码
            
            if (empty(I('post.username')) || empty(I('post.pwd'))){
                
                $this->error('用户名或密码为空！','',2);
            }
            //             if (empty(I('post.verfity'))){
            
            //                 $this->error('验证码不能为空！','',2);
            //             }
            
            //             $verfity = new Verify();
            //             if (!$verfity->check(I('post.verfity'),'admin')){
            
            //                 $this->error('验证码错误！','',2);
            //             }
            
            // 验证用户名跟密码
            $res = M('admin')->where('username="'.I('post.username').'"')->find();
            
            if (empty($res)){
                
                $this->error('用户名不存在!','',2);
            }else {
                
                if (explode('|', cookie('loginError'))[0] == I('post.username') && !empty(cookie('last'))){
                    if (time() >= cookie('last')){
                        cookie('last',null);
                        cookie('loginError',null);
                    }else {
                        $min = round((cookie('last')-time())/60)+1;
                        $this->error('错误次数过多，请在'.$min.'分钟后重试','',2);
                        dump(time() >= cookie('last'));die;
                    }
                }
                
                // 判断密码是否正确
                if (!(md5(I('post.pwd')) == $res['pwd'])){
                    
                    // 设置限制登录错误次数
                    if (!empty(cookie('loginError'))){
                        $count = explode('|', cookie('loginError'))[1] + 1;
                    }else {
                        $count = 0;
                    }
                    $loginError = I('post.username').'|'.$count;
                    $time = 24*60*60;
                    cookie('loginError',$loginError,array('expire'=>$time));
                    
                    // 获取剩余登录次数
                    $con = M('system')->where(array('name'=>'maxfalse'))->getField('value');
                    $last = $con - $count;
                    
                    if ($last == 0){
                        cookie('last',time()+60*5,array('expire'=>$time));
                    }
                    
                    $this->error('密码错误！还可以登录'.$last.'次','',2);
                }else {
                    // 记录登录时间，ip，登录次数
                    $data = array(
                        'user_id' => $res['user_id'],
                        'login_time' => time(),
                        'login_count' => $res['login_count']+1,
                        'login_ip' => get_client_ip(),
                    );
                    
                    // 更新数据
                    M('admin')->save($data);
                    
                    // 记住登录状态
                    session('admin',$res);
                    
                    // 判断是否保存密码
                    if (I('post.online')==1){
                        
                        cookie('online',authcode(I('post.username').'|'.I('post.pwd')),3600*24*7);
                    }else {
                        
                        cookie('online',null);
                    }
                    
                    // 登录成功后去除登录错误次数
                    cookie('last',null);
                    cookie('loginError',null);
                    
//                     dump(empty(session('admin')));
                    
                    // 实现界面跳转
                    $this->redirect('Index/index');
                }
                
            }
        }else { // 显示登录界面
            
            if (!empty(cookie('online'))){
                
                $user = explode('|', authcode(cookie('online'),'DECODE'));
                $this->assign('user',$user);
            }
            
            if (!empty(session('admin'))){
                $this->redirect('Index/index');die;
            }
            
            $this->display('Index/login');
        }
        
    }
    
    // 切换用户
    public function change(){
        if (IS_POST){ // 验证用户名跟密码
            
            if (empty(I('post.username')) || empty(I('post.pwd'))){
                
                $this->error('用户名或密码为空！','',2);
            }
            
//             if (empty(I('post.verfity'))){

//                 $this->error('验证码不能为空！','',2);
//             }

//             $verfity = new Verify();
//             if (!$verfity->check(I('post.verfity'),'admin')){

//                 $this->error('验证码错误！','',2);
//             }
            
            // 验证用户名跟密码
            $res = M('admin')->where('username="'.I('post.username').'"')->find();
            if (empty($res)){
                
                $this->error('用户名不存在!','',2);
            }else {
                
                // 判断密码是否正确
                if (!(md5(I('post.pwd')) == $res['pwd'])){
                    
                    $this->error('密码错误！','',2);
                }else {
                    // 记录登录时间，ip，登录次数
                    $data = array(
                        'user_id' => $res['user_id'],
                        'login_time' => time(),
                        'login_count' => $res['login_count']+1,
                        'login_ip' => get_client_ip(),
                    );
                    
                    // 更新数据
                    M('admin')->save($data);
                    
                    // 记住登录状态
                    session('admin',$res);
                    
                    // 判断是否保存密码
                    if (I('post.online')==1){
                        
                        cookie('online',authcode(I('post.username').'|'.I('post.pwd')),3600*24*7);
                    }else {
                        
                        cookie('online',null);
                    }
                    
                    // 关闭当前界面，刷新父视图
                    $this->show('<script>var index = parent.layer.getFrameIndex(window.name);parent.location.reload();parent.layer.close(index);</script>');
                }
                
            }
        }else {
            $this->display('Index/login');
        }
        
    }
}

?>